注意: Flask 已经自带了 werkzeug 模块,且在这基础上进行了封装,这里只是为了演示 werkzeug 模块的使用方法

1. werkzeug的使用 + 理解

  • werkzeug 的使用一

# xxx.py

from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple


@Request.application
def hello(request):
    return Response('Hello World!')


if __name__ == '__main__':
    run_simple('localhost', 4000, hello)  # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器

  • werkzeug 的使用二

# xxx.py

from werkzeug.wrappers import Response
from werkzeug.serving import run_simple


def hello(environ, start_response):
    response = Response('Hello World!')
    return response(environ, start_response)


if __name__ == '__main__':
    run_simple('localhost', 4000, hello)  # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器

  • 代码的解释 -> 无法运行,只用于理解

# xxx.py

from werkzeug.serving import run_simple


def hello(environ, start_response):
    return b'Hello World!'


if __name__ == '__main__':
    run_simple('localhost', 4000, hello)  # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器

2. 通过 werkzeug 生成 Flask

  • flask 的形成 第一步

# xxx.py

from werkzeug.wrappers import Response
from werkzeug.serving import run_simple


def hello(environ, start_response):
    response = Response('Hello World!')
    return response(environ, start_response)


if __name__ == '__main__':
    run_simple('localhost', 4000, hello)  # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器

  • flask 的形成 第二步

# xxx.py

from werkzeug.wrappers import Response
from werkzeug.serving import run_simple


class Foo(object):
    def __call__(self, environ, start_response):
        response = Response('Hello World!')
        return response(environ, start_response)


obj = Foo()

if __name__ == '__main__':
    run_simple('localhost', 4000, obj)  # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行__call__方法(因为 对象+括号 执行,相当于执行了它所在的类中的 __call__ 方法)返回对应的数据给浏览器

  • flask 的形成 第三步

# xxx.py

from werkzeug.wrappers import Response
from werkzeug.serving import run_simple


class Foo(object):
    def __call__(self, environ, start_response):
        response = Response('Hello World!')
        return response(environ, start_response)

    def run(self):
        run_simple('localhost', 4000, self)  # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行__call__方法(因为 对象+括号 执行,相当于执行了它所在的类中的 __call__ 方法)返回对应的数据给浏览器


obj = Foo()

if __name__ == '__main__':
    obj.run()

  • flask 的形成 第四步

# xxx.py

from werkzeug.wrappers import Response
from werkzeug.serving import run_simple


class Flask(object):
    def __call__(self, environ, start_response):
        response = Response('Hello World!')
        return response(environ, start_response)

    def run(self):
        run_simple('localhost', 4000, self)  # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行__call__方法(因为 对象+括号 执行,相当于执行了它所在的类中的 __call__ 方法)返回对应的数据给浏览器


app = Flask()

if __name__ == '__main__':
    app.run()